package china.accountinghelper.activity;

import com.xdroid.base.ActivityBase;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import china.wc.tallyhelper.R;
import china.wc.tallyhelper.controls.SlideMenu;
import china.wc.tallyhelper.controls.SlideMenuItem;

/**
 * 本类是项目中所有框架类Activity的父类。
 * 用来封装框架Activity中共同的代码，例如设置窗口属性、绑定Layout文件、生成SlideMenu等。
 * 
 * @author 王超
 * 
 */
public abstract class ActivityFrame extends ActivityBase implements china.wc.tallyhelper.controls.SlideMenu.OnSlideMenuItemClickListener
{
    // 进度条
    private ProgressBar mProgressBar;
    // 若生成菜单，则显示mFrame_Include_Bottom；否则隐藏。
    private LinearLayout mFrame_Include_Bottom;
    // SlideMenu对象，本工程中，所有Activity都有1个。用来生成当前Activity的菜单。
    private SlideMenu mSlideMenu;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // 取消系统默认的标题栏
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        // 加载框架XML
        setContentView(R.layout.frame);

        mProgressBar = (ProgressBar) findViewById(R.id.Top_ProgressBar_Progressing);
        mFrame_Include_Bottom = (LinearLayout) findViewById(R.id.Frame_Include_Bottom);
        mSlideMenu = new SlideMenu(this);
    }

    @Override
    protected void onPreExecute()
    {
        mProgressBar.setVisibility(View.VISIBLE);
    }

    @Override
    protected void onPostExecute(Object result)
    {
        mProgressBar.setVisibility(View.GONE);
    }

    /**
     * 设置框架页的标题
     * 
     * @param pResId
     *            String资源Id
     */
    protected void setTopTitle(int pResId)
    {
        ((TextView) findViewById(R.id.Top_TextView_Title)).setText(pResId);
    }
    
    /**
     * 设置框架页的标题
     * 
     * @param pTitle
     */
    protected void setTopTitle(String pTitle)
    {
        ((TextView) findViewById(R.id.Top_TextView_Title)).setText(pTitle);
    }
    
    /**
     * 得到标题栏的ProgressBar
     * @return
     */
    protected ProgressBar getProgressBar()
    {
        return mProgressBar;
    }

    /**
     * 用LAYOUT文件生成View，并加载到当前框架页的中间。
     * 
     * @param pLayoutId
     *            需要加载的LAYOUT文件
     */
    protected void loadFramebody(int pLayoutId)
    {
        LinearLayout _Frame_LinearLayout_Body = (LinearLayout) this.findViewById(R.id.Frame_LinearLayout_Body);
        inflateView(pLayoutId, _Frame_LinearLayout_Body);
    }

    /**
     * 生成SlideMenu菜单。
     * 
     * @param pArrayId
     *            菜单的资源字符串数组ID
     */
    protected void creatSlideMenu(int pArrayId)
    {
        mFrame_Include_Bottom.setVisibility(View.VISIBLE);
        mSlideMenu.addSlideMenuItem(pArrayId);
        mSlideMenu.setOnSlideMenuItemClickListener(this);
    }

    /**
     * 打开/关闭菜单
     */
    protected void slideMenuToggle()
    {
        mSlideMenu.toggle();
    }

}
